<?php

/**
 * Store_CompareController
 *
 * Модуль магазина, контроллер сравнения товаров.
 * Как и вишлист, морфирован из корзины.
 * Контроллер нужен для сравнивания товаров, на основе свойств,
 * указанных в контроллере Store_PropertiesController
 *
 * @package   Store
 * @author    Игорь Будасов aka Lord <igor.budasov@gmail.com>
 * @copyright Игорь Будасов aka Lord <igor.budasov@gmail.com>
 */

class Store_CompareController extends Lord_Controller_Action
{

/*------------------------------------------------------------------------------*/

	/**
	 * Индексный метод. Отображает список товаров
	 */

	public function indexAction()
	{
		// проверяем, есть ли нужные куки
		$cookie = (isset($_COOKIE['Profit_Compare']))
				? array_merge($_COOKIE['Profit_Compare'])
				: array();

		if($cookie != null)
		{
			// товары и их картинки
			$compareImages = array();
			$compare = ($cookie != null)
					 ? $this->model->getSomeGoods($cookie)
					 : array();
			$compareImagesData = $this->model->getImages($compare)->toArray();
			foreach($compareImagesData as $image)
			{
				$compareImages[$image['gid']] = $image['file'];
			}

			// назначаем в шаблон вида
			$this->view->compare       = $compare;
			$this->view->compareImages = $compareImages;
		}

		Zend_Layout::getMvcInstance()->disableLayout();

		return ;
	}

/*------------------------------------------------------------------------------*/

	/**
	 * Метод для добавления товара в список и отображения списка
	 */

	public function addAction()
	{
		$cookie = array();
		// смотрим айдишник товара
		$id = $this->_checkId();
		if($id != 0)
		{
			// устанавливаем куку с этим айдишником
			$ok = setcookie('Profit_Compare['.$id.']',       // имя куки
							$id,                          // значение
							time()+60*60*24*30,           // срок хранения
							'/',                          // путь на сервере
							'.' . $_SERVER['SERVER_NAME'] // имя сервера
							);
			// куки ставятся после завершения скрипта, а нам нужно сейчас,
			// потому как аякс не ждет. Сделаем небольшую хитрость:
			$cookie[$id] = $id;
		}

		// проверяем, есть ли нужные куки
		if(isset($_COOKIE['Profit_Compare']))
			$cookie = array_merge($_COOKIE['Profit_Compare'], $cookie);

		if($cookie != null)
		{
			// товары и их картинки
			$compareImages = array();
			$compare = ($cookie != null)
					 ? $this->model->getSomeGoods($cookie)
					 : array();
			$compareImagesData = $this->model->getImages($compare)->toArray();
			foreach($compareImagesData as $image)
			{
				$compareImages[$image['gid']] = $image['file'];
			}

			// назначаем в шаблон вида
			$this->view->compare       = $compare;
			$this->view->compareImages = $compareImages;
		}

		Zend_Layout::getMvcInstance()->disableLayout();

		return ;
	}

/*------------------------------------------------------------------------------*/

	/**
	 * Метод для отображения страницы сравнения товаров
	 */

	public function showAction()
	{
		// проверяем, есть ли нужные куки
		$cookie = (isset($_COOKIE['Profit_Compare']))
				? array_merge($_COOKIE['Profit_Compare'])
				: array();

		if(!empty($cookie))
		{
			// товары и их картинки
			$compareImages = array();
			$compare = ($cookie != null)
					 ? $this->model->getSomeGoods($cookie)
					 : array();
			$compareImagesData = $this->model->getImages($compare)->toArray();
			foreach($compareImagesData as $image)
			{
				if($image['main'] == 1) $compareImages[$image['gid']]['file'] = $image['file'];
			}

			// свойства товаров
			foreach($compare as $item)
			{
				$properties[$item['id']] = $this->model->getGoodProperties($item['id'], $item['cid'], 'compare')->toArray();
				$compareImages[$item['id']]['goodUrl'] = $item['url'];
			}
			// значения свойств товаров
			foreach($properties as $id=>$property)
			{
				foreach($property as $k=>$v)
				{
					$value = $this->model->getGoodPropertyValue($id, $v['id'], 'compare');
					$properties[$id][$k]['value'] = $value['value'];
				}
			}

			// назначаем в шаблон вида
			$this->view->compare       = $compare;
			$this->view->properties    = $properties;
			$this->view->compareImages = $compareImages;
		}

		return ;
	}

/*------------------------------------------------------------------------------*/

	/**
	* Удаление товара из сравнения
	*/

	function deleteAction()
	{
		// смотрим айдишник товара
		$id = $this->_checkId();

		// устанавливаем куку с этим айдишником, но с отрицательным временем
		$ok = setcookie('Profit_Compare['.$id.']',    // имя куки
						$id,                          // значение
						time()-60*60*24*30,           // срок хранения
						'/',                          // путь на сервере
						'.' . $_SERVER['SERVER_NAME'] // имя сервера
						);

		// проверяем, есть ли нужные куки
		$cookie = (isset($_COOKIE['Profit_Compare']))
				? array_merge($_COOKIE['Profit_Compare'])
				: array();
		// удаляем неную запись о куке из массива
		unset($cookie[array_search($id, $cookie)]);

		if($cookie != null)
		{
			// товары и их картинки
			$compareImages = array();
			$compare = ($cookie != null)
					 ? $this->model->getSomeGoods($cookie)
					 : array();
			$compareImagesData = $this->model->getImages($compare)->toArray();
			foreach($compareImagesData as $image)
			{
				$compareImages[$image['gid']] = $image['file'];
			}

			// назначаем в шаблон вида
			$this->view->compare       = $compare;
			$this->view->compareImages = $compareImages;
		}

		Zend_Layout::getMvcInstance()->disableLayout();
		// перекидываем на страничку товара
		// $this->_redirect($_SERVER['HTTP_REFERER']);
		return true;
	}

 /*==============================================================================*/

	/**
	* Приватный метод для проверки айдишника записи
	*/

	private function _checkId()
	{
		$id = $this->_getParam('id');

		if( $id == false
			or $id == null
			or empty($id)
			or !isset($id))
		{
			return 0;
		}
		else
		{
			return (int)$id;
		}
	}

/*------------------------------------------------------------------------------*/
}
